查看原文
其他

Kubernetes 集群部署 tomcat容器/Java web应用流程

ImportNew 2019-12-02

(点击上方公众号,可快速关注)


来源:乞力马扎罗的雪CYF,

blog.csdn.net/chenyufeng1991/article/details/79843618


kube-tomcat.yaml实现如下


这里是把Deployment和Services在一个文件中实现了。也可以分为两个文件来实现。


# Copyright 2015 Google Inc. All Rights Reserved.

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

 

# Configuration to deploy release version of the Dashboard UI.

#

# Example usage: kubectl create -f <this_file>

 

kind: Deployment

apiVersion: extensions/v1beta1

metadata:

  labels:

    app: kube-tomcat

    version: v1.1.1

  name: kube-tomcat

  namespace: default

spec:

  replicas: 1

  selector:

    matchLabels:

      app: kube-tomcat

  template:

    metadata:

      labels:

        app: kube-tomcat

    spec:

      containers:

      - name: kube-tomcat

        image: docker.io/chenyufeng/tomcat-centos

        imagePullPolicy: Always

        ports:

        - containerPort: 8080

          protocol: TCP

        args:

          # Uncomment the following line to manually specify Kubernetes API server Host

          # If not specified, Dashboard will attempt to auto discover the API server and connect

          # to it. Uncomment only if the default does not work.

        - --apiserver-host=http://47.97.90.38:8080  ## 请修改为自己的kube-apiserver

        livenessProbe:

          httpGet:

            path: /

            port: 8080

          initialDelaySeconds: 30

          timeoutSeconds: 30

---

kind: Service

apiVersion: v1

metadata:

  labels:

    app: kube-tomcat

  name: kube-tomcat

  namespace: default

spec:

  type: NodePort

  ports:

  - port: 80

    targetPort: 8080

  selector:

    app: kube-tomcat


完整的文件如下:


在master上,然后使用如下命令创建deployment和Service


kubectl create -f kube-tomcat.yaml


查看创建的deployment:、


kubectl get deployment


查看这个deployment的详情:


kubectl describe deployment kube-tomcat


查看创建的service:


kubectl get service


查看这个service的详情。


kubectl describe service kube-tomcat


  • service详情这里的IP就是CLUSTER-IP. CLUSTER-IP是和service绑定的。

  • service详情这里的Port就是Service的端口号。

  • service详情这里的NodePort就是Node的真实端口号。

  • service详情这里的Endpoints就是容器的IP和port。


查看创建的pod:


kubectl get pod


查看其中一个pod的详情。


pod详情这里的IP是nodes中的虚拟IP。该虚拟IP可以去nodes里面使用ifconfig查看。


kubectl describe pod kube-tomcat-1115055280-tk1f8


在nodes上查看创建的容器:


  • 然后使用浏览器访问:


http://47.97.90.38:8080/api/v1/proxy/namespaces/default/services/kube-tomcat/


这里一定要指定namespaces和services。


  • 然后到nodes中,把war使用“docker cp”复制到容器的tomcat/webapps,就可以实现页面的访问了【这里可能需要等待较多时间,至少几分钟】

  • 在Postman中进行测试


注意在请求中的IP应该是master所在的IP。返回成功。可以使用Postman来进行接口测试,测试通过表示部署成功。


  • 以上步骤的部署也可以结合持续集成CI/CD来进行,能简化不少流程。


看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存